将来の拡張
===================

テーマを使う
-------------

私たちのブログアプリケーションに [テーマ](http://www.yiiframework.com/doc/guide/ja/topics.theming) を適用するためには、コードを書く必要は少しもありません。テーマを使うために必要なことは、主として、テーマで使用するビューファイルを書いてテーマを開発することです。例えば、異なったページレイアウトを使用する `classic` という名前のテーマを使うためには、`/wwwroot/blog/themes/classic/views/layouts/main.php` というレイアウトビューファイルを作成します。さらに、アプリケーション初期構成を変更して、`classic` テーマを選択したことを示す必要があります。

~~~
[php]
return array(
	......
	'theme'=>'classic',
	......
);
~~~


国際化
--------------------

私たちはブログアプリケーションを国際化して、ブログのページが様々な言語を表示できるようにすることも出来ます。これには主として二つの側面があります。

第一に、私たちは様々な異なる言語でビューファイルを作成することが出来ます。例えば、`PostController` の `index` ページに対して、`/wwwroot/blog/protected/views/post/zh_cn/index.php` というビューファイルを作成することが出来ます。アプリケーションが簡体中国語 (言語コード `zh_cn`) を使用するように構成されると、Yii はオリジナルのビューファイルに代りに、この新しいビューファイルを自動的に使用します。

第二に、私たちはプログラムによって生成されるメッセージに対して、翻訳されたメッセージを作成することが出来ます。翻訳されたメッセージは、`/wwwroot/blog/protected/messages` というディレクトリの下にファイルとして保存されなければなりません。同時に、文字列を使用しているコードを修正して、元の文字列を `Yii::t()` メソッドで囲んで使用しなければなりません。


国際化に関する詳細については、[ガイド](http://www.yiiframework.com/doc/guide/ja/topics.i18n) を参照して下さい。


キャッシュによってパフォーマンスを改善する
--------------------------------

Yii フレームワークはそれ自体としては[非常に効率的](http://www.yiiframework.com/performance/) ですが、Yii で書かれたアプリケーションが効率的であるとは必ずしも言えません。私たちのブログアプリケーションでも、パフォーマンスを改善できる個所がいくつかあります。例えば、タグクラウドポートレットは、複雑なデータベースクエリと PHP ロジックを含んでいるため、パフォーマンスのボトルネックの一つになり得ます。

私たちはパフォーマンスを改善するために、Yii によって提供されている洗練された [キャッシュ機能](http://www.yiiframework.com/doc/guide/ja/caching.overview) を利用することが出来ます。Yii の中でも最も有用なコンポーネントの一つが [COutputCache] です。これはページ表示の断片をキャッシュして、その断片を生成する元になるコードをリクエストごとに実行しなくても良いようにするものです。例えば、レイアウトファイル `/wwwroot/blog/protected/views/layouts/column2.php` において、タグクラウドポートレットを [COutputCache] で囲むことが出来ます:

~~~
[php]
<?php if($this->beginCache('tagCloud', array('duration'=>3600))) { ?>

	<?php $this->widget('TagCloud', array(
		'maxTags'=>Yii::app()->params['tagCloudCount'],
	)); ?>

<?php $this->endCache(); } ?>
~~~

上記のコードでは、タグクラウドの表示は、リクエストごとにその場で生成される代りに、キャッシュから提供されます。キャッシュされた内容は 3600 秒間有効とされます。


新しい機能を追加する
-------------------

私たちのブログアプリケーションはきわめて基本的な機能しか持っていません。完全なブログシステムにするためには、カレンダーポートレット、メール通知、記事のカテゴリー化、過去の記事ポートレット、等々、さらに多くの機能が必要です。これらの機能を実装することは、興味を持った読者の手に委ねます。

<div class="revision">$Id$</div>